package com.aoyama.kafka.base.demo03;

import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.stereotype.Component;

/**
 * 重点：消息转发
 *
 * 在实际开发中，可能有这样的需求，应用A从TopicA获取到消息，经过处理后转发到TopicB，
 * 再由应用B监听处理消息，即一个应用处理完成后将该消息转发至其他应用，完成消息的转发。
 *
 * 在SpringBoot集成Kafka实现消息的转发也很简单，只需要通过一个@SendTo注解，被注解方法的return值即转发的消息内容
 */
@Component
public class ForwardMessage05 {

    /**
     * @Title 消息转发
     * @Description 从topic9接收到的消息经过处理后转发到topic10
     * @Param [record]
     * @return void
     **/
    @KafkaListener(topics = {"topic9"})
    @SendTo("topic10")
    public String onMessage(ConsumerRecord<?, ?> record) {
        return record.value()+"-forward message";
    }

    @KafkaListener(topics = {"topic10"})
    public void onMessage2(ConsumerRecord<?, ?> record) {
        System.out.println(" topic : " +  record.topic() + ",  message：" + record.value());
    }

}
